package com.mkx.controller;

import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

/**
 * 租户控制器，展示静态鉴权功能
 */
@RestController
@RequestMapping("/api/tenant")
public class TenantController {

    /**
     * 获取租户列表 - 只有平台管理员可以查看所有租户
     */
    @GetMapping("/list")
    @PreAuthorize("hasRole('PLATFORM_ADMIN')")
    public String getTenantList() {
        return "Tenant list retrieved successfully";
    }

    /**
     * 创建租户 - 只有平台管理员可以创建租户
     */
    @PostMapping("/create")
    @PreAuthorize("hasRole('PLATFORM_ADMIN')")
    public String createTenant(@RequestBody String tenantData) {
        return "Tenant created successfully";
    }

    /**
     * 获取租户详情 - 平台管理员可以查看所有租户，租户管理员只能查看自己的租户
     */
    @GetMapping("/{tenantId}")
    @PreAuthorize("hasRole('PLATFORM_ADMIN') or @tenantSecurityService.isTenantAdmin(authentication, #tenantId)")
    public String getTenantDetail(@PathVariable String tenantId) {
        return "Tenant detail for ID: " + tenantId;
    }

    /**
     * 更新租户信息 - 平台管理员可以更新所有租户，租户管理员只能更新自己的租户
     */
    @PutMapping("/{tenantId}")
    @PreAuthorize("hasRole('PLATFORM_ADMIN') or @tenantSecurityService.isTenantAdmin(authentication, #tenantId)")
    public String updateTenant(@PathVariable String tenantId, @RequestBody String tenantData) {
        return "Tenant updated successfully";
    }

    /**
     * 删除租户 - 只有平台管理员可以删除租户
     */
    @DeleteMapping("/{tenantId}")
    @PreAuthorize("hasRole('PLATFORM_ADMIN')")
    public String deleteTenant(@PathVariable String tenantId) {
        return "Tenant deleted successfully";
    }
}